OnWeight · Flow Map

Camp lifecycle
state machine

A camp is a bounded effort with a target (the division limit) and usually a date (weigh-in). The Today screen re-skins itself per state — it's the screen that changes most. This map is the canonical order of those states, the trigger that advances each one, and the branches that handle the messy reality. Companion to OnWeight, Logic & Flows.md (§16 camp states) and the live screens in OnWeight, All Screens.html (Lifecycle section).

01 The happy path

Off-season to archived, the full arc. Each card is a state; the label under it is the trigger that moves to the next. Today leads with something different in every one.

Trigger · off-seasonNo campToday shows maintenance weight + “Start a camp.” No projection running.Maintenance
→ starts a campSetupOnboarding / new-camp flow builds the plan. Pre-filled from history on repeat camps.
→ plan live, >1 wk outActiveThe daily loop: pace verdict, projection, trend, log. The long middle of camp.Daily loop
→ ≈ T-7Fight WeekTheme shift. Working target + descent protocol + today's job.Descent
→ T-0Weigh-in DayOne job: record the official number. Everything else recedes.
→ number enteredOutcomeMade → rebuild. Missed → support. (Branch 01.)
→ rehydrate / refeedRebuildMade-weight only: the climb back to fight weight before the bout.Rebuild
→ bout happensFight DayFight-weight readout; the camp's reason for being.
→ after the boutFight ResultWon / Lost / No contest → closes the camp, feeds the archive.
→ post-fightRecoveryRehydrate, refeed, reflect. Calm routine until the next camp.Maintenance
→ archived · loops backArchived → New campThe finished camp lands in Past Camps. A new camp loops back to Setup, pre-filled from this one — each makes the next plan smarter.

Happy path: No camp → Setup → Active → Fight Week → Weigh-in → Outcome → Rebuild → Fight → Result → Recovery → Archived → (loop).

02 The branches

Three forks bend the happy path. Each is designed, in All Screens — this is when each fires.

Branch 01 · Outcome — made vs missed

One template (OutcomeScreen), two readings. Made weight → straight into Rebuild (the climb back to fight weight). Missed weight → acknowledgement only, no rebuild actions, supported and never judged. Both still flow on to Fight Day and Result; only the tone and the next-step differ.

Branch 02 · Paused / Cancelled — the fight moves or falls through

Reachable from any active state via Manage fight. Paused (date moved): stop projecting to the old date, hold the plan, resume when a new date lands. Cancelled (fight fell through): the camp switches back to maintenance; logged data is kept, the dated plan is cleared. Neither loses history. See the cancel-fight and camp↔maintenance transition confirms.

Omni-control · Manage fight — reachable throughout

Not a state — a control available in every active state. Reschedule, postpone, log the result early, or cancel. It's the entry point to Branch 02 and to the destructive confirms (cancel fight / delete camp / change goal). Keep it one tap from Today at all times.

03 What Today leads with, by state

The same tab, a different lead element each state. This is the contract for the Today re-skin.

StateToday leads withTone
No campMaintenance weight + “Start a camp”Neutral
ActivePace verdict, projection, trend, logGreen / steady
Fight WeekWorking target + descent protocol + today's jobHeightened
Weigh-in DayOne job: record the official numberPeak focus
OutcomeMade → rebuild · Missed → supportConditional
RebuildClimb back to fight weightRecover
RecoveryRehydrate, refeed, reflectCalm
Paused / CancelledStop projecting; keep or archive dataHeld

The Active state is where the daily loop and off-pace logic live — mapped in its own companion sheet.

OnWeight HQ